home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 1998 November
/
Freeware November 1998.img
/
dist
/
fw_GGxli.idb
/
usr
/
freeware
/
src
/
xli-1.16
/
image.h.z
/
image.h
Wrap
C/C++ Source or Header
|
1997-09-09
|
6KB
|
130 lines
/* #ident "@(#)x11:contrib/clients/xloadimage/image.h 6.15 93/07/23 Labtam" */
/* image.h:
*
* portable image type declarations
*
* jim frost 10.02.89
*
* Copyright 1989 Jim Frost. See included file "copyright.h" for complete
* copyright information.
*/
#include "copyright.h"
/* the device independent equivalent of the X Color record */
typedef struct {
unsigned long pixel;
unsigned short red, green, blue;
char flags; /* do_red, do_green, do_blue */
char pad;
} xliXColor;
typedef struct rgbmap {
unsigned int size; /* size of RGB map */
unsigned int used; /* number of colors used in RGB map */
boolean compressed; /* image uses colormap fully */
Intensity *red; /* color values in X style */
Intensity *green;
Intensity *blue;
} RGBMap;
/* image structure
*/
typedef struct {
char *title; /* name of image */
unsigned int type; /* type of image */
RGBMap rgb; /* RGB map of image if IRGB type */
unsigned int width; /* width of image in pixels */
unsigned int height; /* height of image in pixels */
unsigned int depth; /* depth of image in bits if IRGB type */
unsigned int pixlen; /* length of pixel if IRGB type */
byte *data; /* data rounded to full byte for each row */
float gamma; /* gamma of display the image is adjusted for */
} Image;
#define IBITMAP 0 /* image is a bitmap */
#define IRGB 1 /* image is RGB */
#define ITRUE 2 /* image is true color */
#define BITMAPP(IMAGE) ((IMAGE)->type == IBITMAP)
#define RGBP(IMAGE) ((IMAGE)->type == IRGB)
#define TRUEP(IMAGE) ((IMAGE)->type == ITRUE)
#define TRUE_RED(PIXVAL) (((unsigned long)((PIXVAL) & 0xff0000)) >> 16)
#define TRUE_GREEN(PIXVAL) (((unsigned long)((PIXVAL) & 0xff00)) >> 8)
#define TRUE_BLUE(PIXVAL) ((unsigned long)((PIXVAL) & 0xff))
#define RGB_TO_TRUE(R,G,B) \
((((unsigned long)((R) & 0xff00)) << 8) | ((G) & 0xff00) | (((unsigned short)(B)) >> 8))
#define depthToColors(n) DepthToColorsTable[((n) < 32 ? (n) : 32)]
/*
* this returns the (approximate) intensity of an RGB triple
*/
#define colorIntensity(R,G,B) \
(RedIntensity[((unsigned short)(R)) >> 8] + GreenIntensity[((unsigned short)(G)) >> 8] + BlueIntensity[((unsigned short)(B)) >> 8])
extern unsigned short RedIntensity[];
extern unsigned short GreenIntensity[];
extern unsigned short BlueIntensity[];
/*
* Architecture independent memory to value conversions.
* Note the "Normal" internal format is big endian.
*/
#define memToVal(PTR,LEN) ( \
(LEN) == 1 ? (unsigned long)( *( (byte *)(PTR)) ) : \
(LEN) == 2 ? (unsigned long)(((unsigned long)(*( (byte *)(PTR)) ))<< 8) \
+ ( *(((byte *)(PTR))+1) ) : \
(LEN) == 3 ? (unsigned long)(((unsigned long)(*( (byte *)(PTR)) ))<<16) \
+ (((unsigned long)(*(((byte *)(PTR))+1)))<< 8) \
+ ( *(((byte *)(PTR))+2) ) : \
(unsigned long)(((unsigned long)(*( (byte *)(PTR)) ))<<24) \
+ (((unsigned long)(*(((byte *)(PTR))+1)))<<16) \
+ (((unsigned long)(*(((byte *)(PTR))+2)))<< 8) \
+ ( *(((byte *)(PTR))+3) ) )
#define valToMem(VAL,PTR,LEN) ( \
(LEN) == 1 ? (*( (byte *)(PTR) ) = ( VAL ) ) : \
(LEN) == 2 ? (*( (byte *)(PTR) ) = (((unsigned long)(VAL))>> 8), \
*(((byte *)(PTR))+1) = ( VAL ) ) : \
(LEN) == 3 ? (*( (byte *)(PTR) ) = (((unsigned long)(VAL))>>16), \
*(((byte *)(PTR))+1) = (((unsigned long)(VAL))>> 8), \
*(((byte *)(PTR))+2) = ( VAL ) ) : \
(*( (byte *)(PTR) ) = (((unsigned long)(VAL))>>24), \
*(((byte *)(PTR))+1) = (((unsigned long)(VAL))>>16), \
*(((byte *)(PTR))+2) = (((unsigned long)(VAL))>> 8), \
*(((byte *)(PTR))+3) = ( VAL ) ))
#define memToValLSB(PTR,LEN) ( \
(LEN) == 1 ? (unsigned long)( *( (byte *)(PTR)) ) : \
(LEN) == 2 ? (unsigned long)( *( (byte *)(PTR)) ) \
+ (((unsigned long)(*(((byte *)(PTR))+1)))<< 8) : \
(LEN) == 3 ? (unsigned long)( *( (byte *)(PTR)) ) \
+ (((unsigned long)(*(((byte *)(PTR))+1)))<< 8) \
+ (((unsigned long)(*(((byte *)(PTR))+2)))<<16) : \
(unsigned long)( *( (byte *)(PTR)) ) \
+ (((unsigned long)(*(((byte *)(PTR))+1)))<< 8) \
+ (((unsigned long)(*(((byte *)(PTR))+2)))<<16) \
+ (((unsigned long)(*(((byte *)(PTR))+3)))<<24) )
/* this is provided for orthagonality
*/
#define valToMemLSB(VAL,PTR,LEN) ( \
(LEN) == 1 ? (*( (byte *)(PTR) ) = ( VAL ) ) : \
(LEN) == 2 ? (*( (byte *)(PTR) ) = ( VAL ), \
*(((byte *)(PTR))+1) = (((unsigned long)(VAL))>> 8) ) : \
(LEN) == 3 ? (*( (byte *)(PTR) ) = ( VAL ), \
*(((byte *)(PTR))+1) = (((unsigned long)(VAL))>> 8), \
*(((byte *)(PTR))+2) = (((unsigned long)(VAL))>>16) ) : \
(*( (byte *)(PTR) ) = ( VAL ), \
*(((byte *)(PTR))+1) = (((unsigned long)(VAL))>> 8), \
*(((byte *)(PTR))+2) = (((unsigned long)(VAL))>>16), \
*(((byte *)(PTR))+3) = (((unsigned long)(VAL))>>24)) )